home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_bind.idb / usr / freeware / bin / named-bootconf.z / named-bootconf
Text File  |  2001-04-12  |  7KB  |  317 lines

  1. #!/bin/sh
  2. #
  3. # $NetBSD: named-bootconf.sh,v 1.5 1998/12/15 01:00:53 tron Exp $
  4. #
  5. # Copyright (c) 1995, 1998 The NetBSD Foundation, Inc.
  6. # All rights reserved.
  7. #
  8. # This code is derived from software contributed to The NetBSD Foundation
  9. # by Matthias Scheler.
  10. #
  11. # Redistribution and use in source and binary forms, with or without
  12. # modification, are permitted provided that the following conditions
  13. # are met:
  14. # 1. Redistributions of source code must retain the above copyright
  15. #    notice, this list of conditions and the following disclaimer.
  16. # 2. Redistributions in binary form must reproduce the above copyright
  17. #    notice, this list of conditions and the following disclaimer in the
  18. #    documentation and/or other materials provided with the distribution.
  19. # 3. All advertising materials mentioning features or use of this software
  20. #    must display the following acknowledgement:
  21. #    This product includes software developed by the NetBSD
  22. #    Foundation, Inc. and its contributors.
  23. # 4. Neither the name of The NetBSD Foundation nor the names of its
  24. #    contributors may be used to endorse or promote products derived
  25. #    from this software without specific prior written permission.
  26. #
  27. # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
  28. # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  29. # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  30. # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
  31. # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  32. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  33. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  34. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  35. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  36. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  37. # POSSIBILITY OF SUCH DAMAGE.
  38.  
  39. ## Copyright (c) 1999 by Internet Software Consortium
  40. ##
  41. ## Permission to use, copy, modify, and distribute this software for any
  42. ## purpose with or without fee is hereby granted, provided that the above
  43. ## copyright notice and this permission notice appear in all copies.
  44. ##
  45. ## THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
  46. ## ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
  47. ## OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
  48. ## CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  49. ## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  50. ## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  51. ## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  52. ## SOFTWARE.
  53.  
  54. if [ ${OPTIONFILE-X} = X ]; then
  55.     OPTIONFILE=/tmp/.options.`date +%s`.$$
  56.     ZONEFILE=/tmp/.zones.`date +%s`.$$
  57.     COMMENTFILE=/tmp/.comments.`date +%s`.$$
  58.     export OPTIONFILE ZONEFILE COMMENTFILE
  59.     touch $OPTIONFILE $ZONEFILE $COMMENTFILE
  60.     DUMP=1
  61. else
  62.     DUMP=0
  63. fi
  64.  
  65. while read CMD ARGS; do
  66.     class=
  67.     CMD=`echo "${CMD}" | tr '[A-Z]' '[a-z]'`
  68.     case $CMD in
  69.     \; )
  70.         echo \# $ARGS >>$COMMENTFILE
  71.         ;;
  72.     cache )
  73.         set - X $ARGS
  74.         shift
  75.         if [ $# -eq 2 ]; then
  76.             (echo ""
  77.             cat $COMMENTFILE
  78.             echo "zone \"$1\" {"
  79.             echo "    type hint;"
  80.             echo "    file \"$2\";"
  81.             echo "};") >>$ZONEFILE
  82.             rm -f $COMMENTFILE
  83.             touch $COMMENTFILE
  84.         fi
  85.         ;;
  86.     directory )
  87.         set - X $ARGS
  88.         shift
  89.         if [ $# -eq 1 ]; then
  90.             (cat $COMMENTFILE
  91.             echo "    directory \"$1\";") >>$OPTIONFILE
  92.             rm -f $COMMENTFILE
  93.             touch $COMMENTFILE
  94.  
  95.             DIRECTORY=$1
  96.             export DIRECTORY
  97.         fi
  98.         ;; 
  99.     forwarders )
  100.         (cat $COMMENTFILE
  101.         echo "    forwarders {"
  102.         for ARG in $ARGS; do
  103.             echo "        $ARG;"
  104.         done
  105.         echo "    };") >>$OPTIONFILE
  106.         rm -f $COMMENTFILE
  107.         touch $COMMENTFILE
  108.         ;;
  109.     include )
  110.         if [ "$ARGS" != "" ]; then
  111.             (cd ${DIRECTORY-.}; cat $ARGS) | $0
  112.         fi
  113.         ;;
  114.     limit )
  115.         ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
  116.         set - X $ARGS
  117.         shift
  118.         if [ $# -eq 2 ]; then
  119.             cat $COMMENTFILE >>$OPTIONFILE
  120.             case $1 in
  121.             datasize | files | transfers-in | transfers-per-ns )
  122.                 echo "    $1 $2;" >>$OPTIONFILE
  123.                 ;;
  124.             esac
  125.             rm -f $COMMENTFILE
  126.             touch $COMMENTFILE
  127.         fi
  128.         ;;
  129.     options )
  130.         ARGS=`echo "${ARGS}" | tr '[A-Z]' '[a-z]'`
  131.         cat $COMMENTFILE >>$OPTIONFILE
  132.         for ARG in $ARGS; do
  133.             case $ARG in
  134.             fake-iquery )
  135.                 echo "    fake-iquery yes;" >>$OPTIONFILE
  136.                 ;;
  137.             forward-only )
  138.                 echo "    forward only;" >>$OPTIONFILE
  139.                 ;;
  140.             no-fetch-glue )
  141.                 echo "    fetch-glue no;" >>$OPTIONFILE
  142.                 ;;
  143.             no-recursion )
  144.                 echo "    recursion no;" >>$OPTIONFILE
  145.                 ;;
  146.             esac
  147.         done
  148.         rm -f $COMMENTFILE
  149.         touch $COMMENTFILE
  150.         ;;
  151.     primary|primary/* )
  152.         case $CMD in
  153.         primary/chaos )
  154.             class="chaos "
  155.             ;;
  156.         primary/hs )
  157.             class="hesiod "
  158.             ;;
  159.         esac
  160.         set - X $ARGS
  161.         shift
  162.         if [ $# -eq 2 ]; then
  163.             (echo ""
  164.             cat $COMMENTFILE
  165.             echo "zone \"$1\" ${class}{"
  166.             echo "    type master;"
  167.             echo "    file \"$2\";"
  168.             echo "};") >>$ZONEFILE
  169.             rm -f $COMMENTFILE
  170.             touch $COMMENTFILE
  171.         fi
  172.         ;;
  173.     secondary|secondary/* )
  174.         case $CMD in
  175.         secondary/chaos )
  176.             class="chaos "
  177.             ;;
  178.         secondary/hs )
  179.             class="hesiod "
  180.             ;;
  181.         esac
  182.         set - X $ARGS
  183.         shift
  184.         if [ $# -gt 1 ]; then
  185.             ZONE=$1
  186.             shift
  187.             PRIMARIES=""
  188.             while [ $# -gt 1 ]; do
  189.                 PRIMARIES="$PRIMARIES $1"
  190.                 shift
  191.             done
  192.             (echo ""
  193.             cat $COMMENTFILE
  194.             echo "zone \"$ZONE\" ${class}{"
  195.             echo "    type slave;"
  196.             if expr x"$1" : '^x[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null
  197.             then
  198.                 PRIMARIES="$PRIMARIES $1"
  199.             else
  200.                 echo "    file \"$1\";"
  201.             fi
  202.             echo "    masters {"
  203.             for PRIMARY in $PRIMARIES; do
  204.                 echo "        $PRIMARY;"
  205.             done
  206.             echo "    };"
  207.             echo "};") >>$ZONEFILE
  208.             rm -f $COMMENTFILE
  209.             touch $COMMENTFILE
  210.         fi
  211.         ;;
  212.     stub|stub/* )
  213.         case $CMD in
  214.         stub/chaos )
  215.             class="chaos "
  216.             ;;
  217.         stub/hs )
  218.             class="hesiod "
  219.             ;;
  220.         esac
  221.         set - X $ARGS
  222.         shift
  223.         if [ $# -gt 1 ]; then
  224.             ZONE=$1
  225.             shift
  226.             PRIMARIES=""
  227.             while [ $# -gt 1 ]; do
  228.                 PRIMARIES="$PRIMARIES $1"
  229.                 shift
  230.             done
  231.             (echo ""
  232.             cat $COMMENTFILE
  233.             echo "zone \"$ZONE\" ${class}{"
  234.             echo "    type stub;"
  235.             if expr x"$1" : '^x[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null
  236.             then
  237.                 PRIMARIES="$PRIMARIES $1"
  238.             else
  239.                 echo "    file \"$1\";"
  240.             fi
  241.             echo "    masters {"
  242.             for PRIMARY in $PRIMARIES; do
  243.                 echo "        $PRIMARY;"
  244.             done
  245.             echo "    };"
  246.             echo "};") >>$ZONEFILE
  247.             rm -f $COMMENTFILE
  248.             touch $COMMENTFILE
  249.         fi
  250.         ;;
  251.     slave )
  252.         cat $COMMENTFILE >>$OPTIONFILE
  253.         echo "    forward only;" >>$OPTIONFILE
  254.         rm -f $COMMENTFILE
  255.         touch $COMMENTFILE
  256.         ;;
  257.     sortlist )
  258.         (cat $COMMENTFILE
  259.         echo "    topology {"
  260.         for ARG in $ARGS; do
  261.             case $ARG in
  262.             *.0.0.0 )
  263.                 echo "        $ARG/8;"
  264.                 ;;
  265.             *.0.0 )
  266.                 echo "        $ARG/16;"
  267.                 ;;
  268.             *.0 )
  269.                 echo "        $ARG/24;"
  270.                 ;;
  271.             * )
  272.                 echo "        $ARG;"
  273.                 ;;
  274.             esac
  275.         done
  276.         echo "    };") >>$OPTIONFILE
  277.         rm -f $COMMENTFILE
  278.         touch $COMMENTFILE
  279.         ;;
  280.     tcplist | xfrnets )
  281.         (cat $COMMENTFILE
  282.         echo "    allow-transfer {"
  283.         for ARG in $ARGS; do
  284.             case $ARG in
  285.             *.0.0.0 )
  286.                 echo "        $ARG/8;"
  287.                 ;;
  288.             *.0.0 )
  289.                 echo "        $ARG/16;"
  290.                 ;;
  291.             *.0 )
  292.                 echo "        $ARG/24;"
  293.                 ;;
  294.             * )
  295.                 echo "        $ARG;"
  296.                 ;;
  297.             esac
  298.         done
  299.         echo "    };") >>$OPTIONFILE
  300.         rm -f $COMMENTFILE
  301.         touch $COMMENTFILE
  302.         ;;
  303.     esac
  304. done
  305.  
  306. if [ $DUMP -eq 1 ]; then
  307.     echo ""
  308.     echo "options {"
  309.     cat $OPTIONFILE
  310.     echo "};"
  311.     cat $ZONEFILE $COMMENTFILE
  312.  
  313.     rm -f $OPTIONFILE $ZONEFILE $COMMENTFILE
  314. fi
  315.  
  316. exit 0
  317.